/**
 * https://leetcode-cn.com/problems/3u1WK4/submissions/
 * 两个链表的第一个重合节点
 * @param headA 
 * @param headB 
 */
const getIntersectionNode = (headA: ListNode | null, headB: ListNode | null): ListNode | null => {
    // 有一个为空, 说明没有重合节点
    if (headA === null || headB === null) return null

    let l: ListNode | null = headA,
        r: ListNode | null = headB;

    // 遍历
    while (l !== null || r !== null) {
        // l 或者 r 为空, 拼接上对方的
        if (l === null) l = headB;
        if (r === null) r = headA;

        // 找到了
        if (l === r) return l;

        // 往下继续找
        l = l.next;
        r = r.next;
    }

    // 找不到
    return null
};